package com.speed_run.utils;

import io.jsonwebtoken.*;

import java.util.Date;

/**
 * jwt 工具类  基于 jjwt实现
 * @author wafer
 *
 */
public class JwtUtils {
	
	
	/**
	 * 生成jwt
	 * @return
	 */
	public static String generateToken(String subject){
		long nowMillis = System.currentTimeMillis();
		Date now = new Date(nowMillis);
		return Jwts.builder().setSubject(subject)
				.signWith(SignatureAlgorithm.HS512, GlobalConst.SECRET).compact();
	}
	
	/**
	 * 接卸jwt
	 * @return 
	 */
	public static String pareseToken(String token){

		Claims body = null;
		try {
			return Jwts.parser().setSigningKey(GlobalConst.SECRET).parseClaimsJws(token).getBody().getSubject();
		} catch (SignatureException | MalformedJwtException e) { // jwt 解析错误
		   e.printStackTrace();
		} catch (ExpiredJwtException  e){ // jwt 已经过期，在设置jwt的时候如果设置了过期时间，这里会自动判断jwt是否已经过期，如果过期则会抛出这个异常，我们可以抓住这个异常并作相关处理。
			e.printStackTrace();
		}
		return "";
	}
	
	public static void main(String[] args) {
		String token = "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIyMDE3MTIyNjNrMTB5eHMxIn0.G5iLOcqfSuauqRi4lOEfoOgToBO7i4ssE5Rbg1q4Qt7AGSkczrHwYmd2xMuM7EM64nl8FQUkYzBHzAtq1PaLdA";
		System.out.println(generateToken("20171125fqjg0m7n"));
	System.out.println(pareseToken(token));
	}
}
